Higher-Order Component
[[コンポーネントを受け取ってコンポーネントを返す関数]]`const EnhancedComponent = higherOrderComponent(WrappedComponent);`既存のコンポーネントに機能を追加するようなことができるpropsを足したり[Hooks]が登場してからはあまり使われなくなったっぽい
useState
や useEffect
は複数回使えるので、ロジックごとに呼べば良い componentDidMount
とかは複数ロジックをその中に詰め込む必要があった useState
と useEffect
を使うimport React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0);
useEffect(() => {
document.title = `You clicked ${count} times`;
});
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
const [items, setItems] = useState([]);
addItem = (newItem) => {
setItems([
...items,
newItem
]);
}
useEffect
使う componentDidMount
とか componentDidUpdate
とかに相当することもこれでやる componentWillUnmount
にも Object.is
で判定される componentDidMount
の如く、初回だけしか実行して欲しくない場合は、第二引数に空の配列を渡す use
で始まる名前で、他のHookを呼ぶ componentDidMount
とか componentDidUpdate
に詰め込まれがちだったstateful logicを分割できるようになるという useReducer
みたいなHookもあって、ふーむ